import psutil
import json
import paho.mqtt.client as mqtt
#pip install paho-mqtt
import time
import serial


# token = "au565ZoLjLjMWyMmKj0x"
client = mqtt.Client()
# client.username_pw_set(token)
client.connect("121.40.144.89")
ser = serial.Serial("/dev/ttyUSB0", 9600)   # 选择串口，并设置波特率

if ser.is_open:
    print("port open success")
    while True:
        # hex(16进制)转换为bytes(2进制)，应注意Python3.7与Python2.7此处转换的不同
        send_data = bytes.fromhex('01 03 00 00 00 02 C4 0B')    # 发送数据转换为b'\xff\x01\x00U\x00\x00V'
        ser.write(send_data)   # 发送命令
        time.sleep(1)        # 延时，否则len_return_data将返回0，此处易忽视！！！
        len_return_data = ser.inWaiting()  # 获取缓冲数据（接收数据）长度
        if len_return_data:
            return_data = ser.read(len_return_data)  # 读取缓冲数据
            # bytes(2进制)转换为hex(16进制)，应注意Python3.7与Python2.7此处转换的不同，并转为字符串后截取所需数据字段，再转为10进制
            str_return_data = str(return_data.hex())
            print(str_return_data)
            # print(str_return_data[6:10])
            hum = int(str_return_data[6:10], 16)/10.0
            temp = int(str_return_data[11:14], 16)/10.0
            print("hum:",hum,"temp:",temp)

            info={
                "temp":temp,
                "hum":hum
            }
            info_json = json.dumps(info) 
            # data ='{"temp" :%.1f}'%(random.randint(0, 250)/10)
            client.publish("v1/devices/me/telemetry",info_json)
            # print(data)
            print(info_json)

            time.sleep(5) 
else:
    print("port open failed")


    
   
   